home *** CD-ROM | disk | FTP | other *** search
/ Aminet 51 / Aminet 51 (2002)(GTI - Schatztruhe)[!][Oct 2002].iso / Aminet / util / arc / xadmasterdev.lha / xad / Sources / tools / xadLibInfo.c < prev    next >
Encoding:
C/C++ Source or Header  |  2002-08-20  |  5.3 KB  |  190 lines

  1. #define NAME         "xadLibInfo"
  2. #define DISTRIBUTION "(Freeware) "
  3. #define REVISION     "6"
  4. #define DATE         "07.08.2002"
  5.  
  6. /* Programmheader
  7.  
  8.     Name:        xadLibInfo
  9.     Author:        SDI
  10.     Distribution:    Freeware
  11.     Description:    show informations about xad Clients
  12.     Compileropts:    -
  13.     Linkeropts:    -gsi -l amiga
  14.  
  15.  1.0   18.11.98 : first version
  16.  1.1   30.06.99 : added XADCF_FREE flags
  17.  1.2   29.08.99 : added new SKIPINFO free flag
  18.  1.3   03.02.00 : added XADCF_FILESYSTEM flag
  19.  1.4   16.03.00 : added XADCF_NOCHECKSIZE flag
  20.  1.5   12.08.01 : added lots of new flags
  21.  1.6   07.08.02 : added XADCF_FREEXADSTRINGS
  22. */
  23.  
  24. #include <proto/xadmaster.h>
  25. #include <proto/exec.h>
  26. #include <proto/dos.h>
  27. #include <dos/dosasl.h>
  28. #include "SDI_version.h"
  29.  
  30. #ifdef __SASC
  31.   #define dosbase     DOSBase 
  32.   #define xadmasterbase     xadMasterBase 
  33.   #define ASSIGN_DOS
  34.   #define ASSIGN_XAD
  35.   #define ASSIGN_SYS     struct ExecBase * SysBase; \
  36.              SysBase = (*((struct ExecBase **) 4));
  37. #else
  38.   struct DosLibrary *     DOSBase = 0;
  39.   struct ExecBase *     SysBase  = 0;
  40.   struct xadMasterBase * xadMasterBase = 0;
  41.  
  42.   #define ASSIGN_DOS     DOSBase = dosbase;
  43.   #define ASSIGN_XAD     xadMasterBase = xadmasterbase;
  44.   #define ASSIGN_SYS     SysBase = (*((struct ExecBase **) 4));
  45. #endif
  46.  
  47. ULONG start(void)
  48. {
  49.   ULONG ret = RETURN_FAIL;
  50.   struct DosLibrary *dosbase;
  51.  
  52.   ASSIGN_SYS
  53.   { /* test for WB and reply startup-message */
  54.     struct Process *task;
  55.     if(!(task = (struct Process *) FindTask(0))->pr_CLI)
  56.     {
  57.       WaitPort(&task->pr_MsgPort);
  58.       Forbid();
  59.       ReplyMsg(GetMsg(&task->pr_MsgPort));
  60.       return RETURN_FAIL;
  61.     }
  62.   }
  63.  
  64.   if((dosbase = (struct DosLibrary *) OpenLibrary("dos.library", 37)))
  65.   {
  66.     struct xadMasterBase *xadmasterbase;
  67.     ASSIGN_DOS
  68.     if((xadmasterbase = (struct xadMasterBase *) 
  69.     OpenLibrary("xadmaster.library", 1)))
  70.     {
  71.       ULONG fl;
  72.       struct xadClient *xc;
  73.  
  74.       ASSIGN_XAD
  75.       ret = 0;
  76.       if((xc = xadGetClientInfo()))
  77.         Printf("\033[4mClients of xadmaster.library %ld.%ld\033[0m\n\n"
  78.     "Name                      |  ID  | MV |  VER  | Flags\n"
  79.     "--------------------------+------+----+-------+------------------------------\n",
  80.     xadmasterbase->xmb_LibNode.lib_Version,
  81.     xadmasterbase->xmb_LibNode.lib_Revision);
  82.       
  83.       while(xc && !(SetSignal(0L,0L) & SIGBREAKF_CTRL_C))
  84.       {
  85.         fl = xc->xc_Flags;
  86.  
  87.         Printf("%-26s| ", xc->xc_ArchiverName);
  88.         Printf(xc->xc_Identifier ? "%04ld" : "----", xc->xc_Identifier);
  89.         Printf(" | %2ld |%3ld.%ld%s| ", xc->xc_MasterVersion,
  90.         xc->xc_ClientVersion, xc->xc_ClientRevision, xc->xc_ClientRevision
  91.         >= 100 ? "" : xc->xc_ClientRevision >= 10 ? " " : "  ");
  92.         if(fl & XADCF_FILEARCHIVER)
  93.         {
  94.           fl &= ~XADCF_FILEARCHIVER;
  95.           Printf("FILE%s", fl ? "," : "");
  96.         }
  97.         if(fl & XADCF_DISKARCHIVER)
  98.         {
  99.           fl &= ~XADCF_DISKARCHIVER;
  100.           Printf("DISK%s", fl ? "," : "");
  101.         }
  102.         if(fl & XADCF_FILESYSTEM)
  103.         {
  104.           fl &= ~XADCF_FILESYSTEM;
  105.           Printf("FILESYS%s", fl ? "," : "");
  106.         }
  107.         if(fl & XADCF_EXTERN)
  108.         {
  109.           fl &= ~XADCF_EXTERN;
  110.           Printf("EXTERN%s", fl ? "," : "");
  111.         }
  112.         if(fl & XADCF_NOCHECKSIZE)
  113.         {
  114.           fl &= ~XADCF_NOCHECKSIZE;
  115.           Printf("NOCHECKSIZE%s", fl ? "," : "");
  116.         }
  117.         if(fl & XADCF_DATACRUNCHER)
  118.         {
  119.           fl &= ~XADCF_DATACRUNCHER;
  120.           Printf("DATACRUNCHER%s", fl ? "," : "");
  121.         }
  122.         if(fl & XADCF_EXECRUNCHER)
  123.         {
  124.           fl &= ~XADCF_EXECRUNCHER;
  125.           Printf("EXECRUNCHER%s", fl ? "," : "");
  126.         }
  127.         if(fl & XADCF_ADDRESSCRUNCHER)
  128.         {
  129.           fl &= ~XADCF_ADDRESSCRUNCHER;
  130.           Printf("ADDRESSCRUNCHER%s", fl ? "," : "");
  131.         }
  132.         if(fl & XADCF_LINKER)
  133.         {
  134.           fl &= ~XADCF_LINKER;
  135.           Printf("LINKER%s", fl ? "," : "");
  136.         }
  137.         fl &= XADCF_FREEFILEINFO|XADCF_FREEDISKINFO|XADCF_FREETEXTINFO|XADCF_FREESKIPINFO|XADCF_FREETEXTINFOTEXT|
  138.               XADCF_FREESPECIALINFO|XADCF_FREEXADSTRINGS;
  139.         if(fl)
  140.         {
  141.           Printf("FREE(");
  142.           if(fl & XADCF_FREEFILEINFO)
  143.           {
  144.             fl &= ~XADCF_FREEFILEINFO;
  145.             Printf("FI%s", fl ? "," : ")");
  146.           }
  147.           if(fl & XADCF_FREEDISKINFO)
  148.           {
  149.             fl &= ~XADCF_FREEDISKINFO;
  150.             Printf("DI%s", fl ? "," : ")");
  151.           }
  152.           if(fl & XADCF_FREETEXTINFO)
  153.           {
  154.             fl &= ~XADCF_FREETEXTINFO;
  155.             Printf("TI%s", fl ? "," : ")");
  156.           }
  157.           if(fl & XADCF_FREESKIPINFO)
  158.           {
  159.             fl &= ~XADCF_FREESKIPINFO;
  160.             Printf("SI%s", fl ? "," : ")");
  161.           }
  162.           if(fl & XADCF_FREESPECIALINFO)
  163.           {
  164.             fl &= ~XADCF_FREESPECIALINFO;
  165.             Printf("SP%s", fl ? "," : ")");
  166.           }
  167.           if(fl & XADCF_FREEXADSTRINGS)
  168.           {
  169.             fl &= ~XADCF_FREEXADSTRINGS;
  170.             Printf("STR%s", fl ? "," : ")");
  171.           }
  172.           if(fl & XADCF_FREETEXTINFOTEXT)
  173.             Printf("TEXT)");
  174.         }
  175.  
  176.         Printf("\n");
  177.     xc = xc->xc_Next;
  178.       }
  179.       if(SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
  180.         PrintFault(ERROR_BREAK,0 );
  181.  
  182.       CloseLibrary((struct Library *) xadmasterbase);
  183.     }
  184.     else
  185.       Printf("Could not open xadmaster.library\n");
  186.     CloseLibrary((struct Library *) dosbase);
  187.   }
  188.   return ret;
  189. }
  190.